/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package de.bht.esa.weather.frontend;

import de.bht.esa.weather.model.WetterComLocation;
import de.bht.esa.weather.remotebeaninterfaces.WeatherResourceManager;
import javax.annotation.security.RolesAllowed;
import javax.naming.InitialContext;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.SecurityContext;
import javax.ws.rs.core.UriInfo;

/**
 * Stellt eine REST-Schnittstelle für die Suche nach Orten bereit.
 * 
 * 
 * @author Andreas Goese
 * @author Sven Höche
 */
@Path("location")
public class LocationResource {

    WeatherResourceManager ressourceManager;
    
    @Context
    private UriInfo context;

    public LocationResource(@Context SecurityContext sc) throws Exception{
        InitialContext ctx = new InitialContext();
        this.ressourceManager = (WeatherResourceManager)ctx.lookup("de.bht.esa.weather.remotebeaninterfaces.WeatherResourceManager");
    }

    /**
     * Sucht nach Orten die zum übergebenen Query passen
     * 
     * @param query Suchquery, kann Postleitzahlen oder Ortsnamen enthalten
     * @return Die gefundenen Orte
     * @throws Exception 
     */
    @GET
    @Produces("application/json")
    @Path("search/{query}")
    @RolesAllowed({"ADMIN","USER"})
    public WetterComLocation[] search(@PathParam("query") String query) throws Exception{
        if(query.length() > 1){
            return ressourceManager.searchLocation(query);
        }else{
            return null;
        }
    }
    
}
